﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using bolsatrabajo.Negocio;
using bolsatrabajo.Dominio.NHIBERNATE;

namespace bolsatrabajo.Controllers
{
    public class PostulanteController : Controller
    {
        ServPostulante ServPostulante { get; set; }
        
        public ActionResult Index()
        {
            ICollection<Postulante> Model = ServPostulante.ListarPostulantes();
            return View(Model);
        }
        public ActionResult PruebaPPP()
        {
            ICollection<Postulante> Model = ServPostulante.ListarPostulantes();
            return View(Model);
        }
        public ActionResult Details(String codigo)
        {
            Postulante Model = ServPostulante.ObtenerPostulante(codigo);
            return View(Model);
        }
        public ActionResult DetailsParaPostulante(String correo)
        {
            correo = Session["logincorreopostulante"].ToString();
            Postulante Model = ServPostulante.ObtenerPostulante(correo);
            return View(Model);
        }
        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                   
                   
                    Postulante nuevoPostulante = new Postulante();
                    nuevoPostulante.Dni = (String)collection["DNI"];
                    nuevoPostulante.Nombres = (String)collection["Nombres"];
                    nuevoPostulante.ApellidoPaterno = (String)collection["ApellidoPaterno"];
                    nuevoPostulante.ApellidoMaterno = (String)collection["ApellidoMaterno"];
                    nuevoPostulante.Sexo = (String)collection["Sexo"];
                    nuevoPostulante.Contrasena = (String)collection["Contrasena"];
                    nuevoPostulante.Telefono = (String)collection["Telefono"];
                    nuevoPostulante.Ubicacion = (String)collection["Ubicacion"];
                    nuevoPostulante.Direccion = (String)collection["Direccion"];
                    nuevoPostulante.Profesion = (String)collection["Profesion"];
                    nuevoPostulante.FechaNacimiento = (String)collection["FechaNacimiento"];
                    nuevoPostulante.Correo = (String)collection["Correo"];
                    nuevoPostulante.Referencia = (String)collection["Referencia"];
                    nuevoPostulante.ExperienciaLaboral = (String)collection["ExperienciaLaboral"];
                    //nuevoPostulante.EstadoCivil = (String)collection["EstadoCivil"];
                    nuevoPostulante.Estudios = (String)collection["Estudios"];
                    ServPostulante.CrearPostulante(nuevoPostulante);
                    return RedirectToAction("Acceso","Postulante");
                }
                return View();
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error interno al intentar crear el postulante");
                return View();
            }
        }

        public ActionResult Edit(String codigo)
        {
            Postulante Model = ServPostulante.ObtenerPostulante(codigo);
            return View(Model);
        }

        [HttpPost]
        public ActionResult Edit(String codigo, FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Postulante postulanteAModificar = ServPostulante.ObtenerPostulante(codigo);
                    postulanteAModificar.Dni = (String)collection["DNI"];
                    postulanteAModificar.Nombres = (String)collection["Nombres"];
                    postulanteAModificar.ApellidoPaterno = (String)collection["ApellidoPaterno"];
                    postulanteAModificar.ApellidoMaterno = (String)collection["ApellidoMaterno"];
                    postulanteAModificar.Sexo = (String)collection["Sexo"];
                    postulanteAModificar.Contrasena = (String)collection["Contrasena"];
                    postulanteAModificar.Telefono = (String)collection["Telefono"];
                    postulanteAModificar.Ubicacion = (String)collection["Ubicacion"];
                    postulanteAModificar.Direccion = (String)collection["Direccion"];
                    postulanteAModificar.Profesion = (String)collection["Profesion"];
                    postulanteAModificar.FechaNacimiento = (String)collection["FechaNacimiento"];
                    postulanteAModificar.Correo = (String)collection["Correo"];
                    postulanteAModificar.Referencia = (String)collection["Referencia"];
                    postulanteAModificar.ExperienciaLaboral = (String)collection["ExperienciaLaboral"];
                    //postulanteAModificar.EstadoCivil = (String)collection["EstadoCivil"];
                    postulanteAModificar.Estudios = (String)collection["Estudios"];
                    ServPostulante.ModificarPostulante(postulanteAModificar);
                    return RedirectToAction("ListaAvisos","Aviso");
                    
                }
                return View();
            }
            catch
            {
                return View();
            }
        }


        public ActionResult Delete(String codigo)
        {
            Postulante Model = ServPostulante.ObtenerPostulante(codigo);
            return View(Model);
        }

        //
        // POST: /Tutor/Delete/pcsihsai
        [HttpPost]
        public ActionResult Delete(String codigo, FormCollection collection)
        {
            try
            {
                Postulante postulanteAEliminar = ServPostulante.ObtenerPostulante(codigo);
                ServPostulante.EliminarPostulante(postulanteAEliminar);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        public ActionResult Acceso()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Acceso(String correo, String contrasena)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Postulante Model = ServPostulante.ValidarCorreoyContrasena(correo, contrasena);
                    if (Model == null)
                    {
                        return RedirectToAction("Acceso");
                    }
                    else
                    {
                        Session["logincorreopostulante"] = correo;
                        return RedirectToAction("ListaAvisos", "Aviso");
                    }
                }
                return View();
            }
            catch (Exception)
            {
                ModelState.AddModelError(String.Empty, "Error interno al intentar crear el Ofertante");
                return View();
            }
        }
    
    }
}